package com.atguigu.stgy.app.controller;

import com.atguigu.stgy.app.service.UserInfoService;
import com.atguigu.stgy.common.util.JwtUtils;
import com.atguigu.stgy.model.dto.UserLoginDTO;
import com.atguigu.stgy.model.result.R;
import com.atguigu.stgy.model.result.ResultCodeEnum;
import com.atguigu.stgy.model.vo.SystemUserInfoVO;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/app")
public class UserLoginController {
    @Resource
    UserInfoService userInfoService;
    //web-app 和web-admin 前端提交的jwt 携带方式一样 access_token在请求头中携带
    @Operation(summary = "获取用户信息")
    @GetMapping("/info")
//    public R info(@RequestHeader("access_token")String token){
    public R info(){
        // 大量的接口都需要写 登录状态校验的业务逻辑 ，可以使用 filter过滤器(使用容器对象麻烦)、
        //     aop(可以对controller接口增强、区分接口繁琐)、拦截器(ds请求转交给controller时执行 可以配置拦截路径的规则)
        //获取用户信息：用户必须登录后才可以访问  先校验登录状态
//        boolean flag = JwtUtils.checkToken(token);
//        if(!flag){
//            return R.fail(ResultCodeEnum.APP_LOGIN_AUTH);
//        }
        //登录成功 如何保持登录状态
        // 后台管理系统&用户前台系统： jwt  token模式
        SystemUserInfoVO vo = userInfoService.getInfo();
        return R.ok(vo);
    }
    @Operation(summary = "会员获取登录验证码")
    @PostMapping("/login")
    public R login(@RequestBody UserLoginDTO userLoginDTO){
        //登录成功 如何保持登录状态
        // 后台管理系统&用户前台系统： jwt  token模式
        String jwt = userInfoService.login(userLoginDTO);
        return R.ok(jwt);
    }
    ///app/login/getCode?phone=13888888888
    @Operation(summary = "会员获取登录验证码")
    @GetMapping("/login/getCode")
    public R getCode(@RequestParam("phone")String phone){
        userInfoService.getCode(phone);
        return R.ok();
    }

}
